/**
 */
package wcomm_v1.util;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

import wcomm_v1.*;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see wcomm_v1.Wcomm_v1Package
 * @generated
 */
public class Wcomm_v1Switch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static Wcomm_v1Package modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Wcomm_v1Switch()
  {
    if (modelPackage == null)
    {
      modelPackage = Wcomm_v1Package.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case Wcomm_v1Package.ROOT:
      {
        ROOT root = (ROOT)theEObject;
        T result = caseROOT(root);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.IMPORT:
      {
        Import import_ = (Import)theEObject;
        T result = caseImport(import_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.NAMED_ELEMENT:
      {
        NamedElement namedElement = (NamedElement)theEObject;
        T result = caseNamedElement(namedElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.DOCUMENTABLE_ELEMENT:
      {
        DocumentableElement documentableElement = (DocumentableElement)theEObject;
        T result = caseDocumentableElement(documentableElement);
        if (result == null) result = caseNamedElement(documentableElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.DATATYPE:
      {
        Datatype datatype = (Datatype)theEObject;
        T result = caseDatatype(datatype);
        if (result == null) result = caseDocumentableElement(datatype);
        if (result == null) result = caseNamedElement(datatype);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.INTERFACE:
      {
        Interface interface_ = (Interface)theEObject;
        T result = caseInterface(interface_);
        if (result == null) result = caseDocumentableElement(interface_);
        if (result == null) result = caseNamedElement(interface_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.SERVICE:
      {
        Service service = (Service)theEObject;
        T result = caseService(service);
        if (result == null) result = caseDocumentableElement(service);
        if (result == null) result = caseNamedElement(service);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.END_POINT:
      {
        EndPoint endPoint = (EndPoint)theEObject;
        T result = caseEndPoint(endPoint);
        if (result == null) result = caseDocumentableElement(endPoint);
        if (result == null) result = caseNamedElement(endPoint);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.MESSAGE:
      {
        Message message = (Message)theEObject;
        T result = caseMessage(message);
        if (result == null) result = caseNamedElement(message);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.LINK:
      {
        Link link = (Link)theEObject;
        T result = caseLink(link);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.PLUG:
      {
        Plug plug = (Plug)theEObject;
        T result = casePlug(plug);
        if (result == null) result = caseEndPoint(plug);
        if (result == null) result = caseDocumentableElement(plug);
        if (result == null) result = caseNamedElement(plug);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.SOCKET:
      {
        Socket socket = (Socket)theEObject;
        T result = caseSocket(socket);
        if (result == null) result = caseEndPoint(socket);
        if (result == null) result = caseDocumentableElement(socket);
        if (result == null) result = caseNamedElement(socket);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.MSG_DEFINITION:
      {
        MsgDefinition msgDefinition = (MsgDefinition)theEObject;
        T result = caseMsgDefinition(msgDefinition);
        if (result == null) result = caseDocumentableElement(msgDefinition);
        if (result == null) result = caseNamedElement(msgDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.PARAMETER:
      {
        Parameter parameter = (Parameter)theEObject;
        T result = caseParameter(parameter);
        if (result == null) result = caseNamedElement(parameter);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.ACTIVITY_DEFINITION:
      {
        ActivityDefinition activityDefinition = (ActivityDefinition)theEObject;
        T result = caseActivityDefinition(activityDefinition);
        if (result == null) result = caseDocumentableElement(activityDefinition);
        if (result == null) result = caseNamedElement(activityDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.ATTRIBUTE:
      {
        Attribute attribute = (Attribute)theEObject;
        T result = caseAttribute(attribute);
        if (result == null) result = caseDocumentableElement(attribute);
        if (result == null) result = caseNamedElement(attribute);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.EVENT_GENERATION:
      {
        EventGeneration eventGeneration = (EventGeneration)theEObject;
        T result = caseEventGeneration(eventGeneration);
        if (result == null) result = caseDocumentableElement(eventGeneration);
        if (result == null) result = caseNamedElement(eventGeneration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.COMPONENT_DEFINITION:
      {
        ComponentDefinition componentDefinition = (ComponentDefinition)theEObject;
        T result = caseComponentDefinition(componentDefinition);
        if (result == null) result = caseDocumentableElement(componentDefinition);
        if (result == null) result = caseNamedElement(componentDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.PORT_DEFINITION:
      {
        PortDefinition portDefinition = (PortDefinition)theEObject;
        T result = casePortDefinition(portDefinition);
        if (result == null) result = caseNamedElement(portDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.COMPLEX_COMPONENT_DEFINITION:
      {
        ComplexComponentDefinition complexComponentDefinition = (ComplexComponentDefinition)theEObject;
        T result = caseComplexComponentDefinition(complexComponentDefinition);
        if (result == null) result = caseComponentDefinition(complexComponentDefinition);
        if (result == null) result = caseDocumentableElement(complexComponentDefinition);
        if (result == null) result = caseNamedElement(complexComponentDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.SIMPLE_COMPONENT_DEFINITION:
      {
        SimpleComponentDefinition simpleComponentDefinition = (SimpleComponentDefinition)theEObject;
        T result = caseSimpleComponentDefinition(simpleComponentDefinition);
        if (result == null) result = caseComponentDefinition(simpleComponentDefinition);
        if (result == null) result = caseDocumentableElement(simpleComponentDefinition);
        if (result == null) result = caseNamedElement(simpleComponentDefinition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.COMPONENT:
      {
        Component component = (Component)theEObject;
        T result = caseComponent(component);
        if (result == null) result = caseNamedElement(component);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.IN_MESSAGE:
      {
        InMessage inMessage = (InMessage)theEObject;
        T result = caseInMessage(inMessage);
        if (result == null) result = caseNamedElement(inMessage);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.OUT_MESSAGE:
      {
        OutMessage outMessage = (OutMessage)theEObject;
        T result = caseOutMessage(outMessage);
        if (result == null) result = caseNamedElement(outMessage);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.PORT:
      {
        Port port = (Port)theEObject;
        T result = casePort(port);
        if (result == null) result = caseNamedElement(port);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.ASSEMBLY_LINK:
      {
        AssemblyLink assemblyLink = (AssemblyLink)theEObject;
        T result = caseAssemblyLink(assemblyLink);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.DELEGATION_LINK:
      {
        DelegationLink delegationLink = (DelegationLink)theEObject;
        T result = caseDelegationLink(delegationLink);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.IN_PIN:
      {
        InPin inPin = (InPin)theEObject;
        T result = caseInPin(inPin);
        if (result == null) result = caseNamedElement(inPin);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.OUT_PIN:
      {
        OutPin outPin = (OutPin)theEObject;
        T result = caseOutPin(outPin);
        if (result == null) result = caseNamedElement(outPin);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.EVENT_PIN:
      {
        EventPin eventPin = (EventPin)theEObject;
        T result = caseEventPin(eventPin);
        if (result == null) result = caseNamedElement(eventPin);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.MESSSAGE2_MESSAGE:
      {
        Messsage2Message messsage2Message = (Messsage2Message)theEObject;
        T result = caseMesssage2Message(messsage2Message);
        if (result == null) result = caseNamedElement(messsage2Message);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.XTA:
      {
        XTA xta = (XTA)theEObject;
        T result = caseXTA(xta);
        if (result == null) result = caseDocumentableElement(xta);
        if (result == null) result = caseNamedElement(xta);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.ACTIVITY:
      {
        Activity activity = (Activity)theEObject;
        T result = caseActivity(activity);
        if (result == null) result = caseNamedElement(activity);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.REGION:
      {
        Region region = (Region)theEObject;
        T result = caseRegion(region);
        if (result == null) result = caseNamedElement(region);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.EVENT:
      {
        Event event = (Event)theEObject;
        T result = caseEvent(event);
        if (result == null) result = caseNamedElement(event);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.VERTEX:
      {
        Vertex vertex = (Vertex)theEObject;
        T result = caseVertex(vertex);
        if (result == null) result = caseNamedElement(vertex);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.TRANSITION:
      {
        Transition transition = (Transition)theEObject;
        T result = caseTransition(transition);
        if (result == null) result = caseNamedElement(transition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.GUARD:
      {
        Guard guard = (Guard)theEObject;
        T result = caseGuard(guard);
        if (result == null) result = caseDocumentableElement(guard);
        if (result == null) result = caseNamedElement(guard);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.INITIAL_PSEUDOSTATE:
      {
        InitialPseudostate initialPseudostate = (InitialPseudostate)theEObject;
        T result = caseInitialPseudostate(initialPseudostate);
        if (result == null) result = caseVertex(initialPseudostate);
        if (result == null) result = caseNamedElement(initialPseudostate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.HISTORY_PSEUDOSTATE:
      {
        HistoryPseudostate historyPseudostate = (HistoryPseudostate)theEObject;
        T result = caseHistoryPseudostate(historyPseudostate);
        if (result == null) result = caseVertex(historyPseudostate);
        if (result == null) result = caseNamedElement(historyPseudostate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.JOIN_PSEUDOSTATE:
      {
        JoinPseudostate joinPseudostate = (JoinPseudostate)theEObject;
        T result = caseJoinPseudostate(joinPseudostate);
        if (result == null) result = caseVertex(joinPseudostate);
        if (result == null) result = caseNamedElement(joinPseudostate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.FORK_PSEUDOSTATE:
      {
        ForkPseudostate forkPseudostate = (ForkPseudostate)theEObject;
        T result = caseForkPseudostate(forkPseudostate);
        if (result == null) result = caseVertex(forkPseudostate);
        if (result == null) result = caseNamedElement(forkPseudostate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.STATE:
      {
        State state = (State)theEObject;
        T result = caseState(state);
        if (result == null) result = caseVertex(state);
        if (result == null) result = caseNamedElement(state);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Wcomm_v1Package.FINAL_STATE:
      {
        FinalState finalState = (FinalState)theEObject;
        T result = caseFinalState(finalState);
        if (result == null) result = caseVertex(finalState);
        if (result == null) result = caseNamedElement(finalState);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>ROOT</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>ROOT</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseROOT(ROOT object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Import</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Import</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImport(Import object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedElement(NamedElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Documentable Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Documentable Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDocumentableElement(DocumentableElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Datatype</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Datatype</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDatatype(Datatype object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interface</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interface</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInterface(Interface object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Service</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Service</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseService(Service object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>End Point</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>End Point</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEndPoint(EndPoint object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessage(Message object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Link</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Link</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLink(Link object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Plug</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Plug</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePlug(Plug object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Socket</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Socket</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSocket(Socket object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Msg Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Msg Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMsgDefinition(MsgDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Parameter</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Parameter</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParameter(Parameter object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Activity Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Activity Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseActivityDefinition(ActivityDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attribute</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attribute</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttribute(Attribute object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Event Generation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Event Generation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEventGeneration(EventGeneration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponentDefinition(ComponentDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Port Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Port Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePortDefinition(PortDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Complex Component Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Complex Component Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComplexComponentDefinition(ComplexComponentDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Simple Component Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Simple Component Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSimpleComponentDefinition(SimpleComponentDefinition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Component</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComponent(Component object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>In Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>In Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInMessage(InMessage object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Out Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Out Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOutMessage(OutMessage object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Port</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Port</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePort(Port object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Assembly Link</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Assembly Link</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAssemblyLink(AssemblyLink object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Delegation Link</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Delegation Link</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDelegationLink(DelegationLink object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>In Pin</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>In Pin</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInPin(InPin object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Out Pin</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Out Pin</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOutPin(OutPin object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Event Pin</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Event Pin</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEventPin(EventPin object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Messsage2 Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Messsage2 Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMesssage2Message(Messsage2Message object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XTA</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XTA</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXTA(XTA object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Activity</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Activity</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseActivity(Activity object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Region</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Region</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRegion(Region object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Event</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Event</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEvent(Event object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Vertex</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Vertex</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVertex(Vertex object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTransition(Transition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Guard</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Guard</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGuard(Guard object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Initial Pseudostate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Initial Pseudostate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInitialPseudostate(InitialPseudostate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>History Pseudostate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>History Pseudostate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseHistoryPseudostate(HistoryPseudostate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Join Pseudostate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Join Pseudostate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseJoinPseudostate(JoinPseudostate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Fork Pseudostate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Fork Pseudostate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseForkPseudostate(ForkPseudostate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>State</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>State</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseState(State object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Final State</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Final State</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFinalState(FinalState object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //Wcomm_v1Switch
